package com.exam.api.modules.system.dto;

import cn.hutool.core.bean.BeanUtil;
import com.exam.api.modules.system.domain.PermissionScope;
import com.exam.api.modules.system.domain.TblRole;
import com.exam.api.common.dto.ConverterDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.util.List;

/**
 * 角色新增DTO
 *
 * @author bcheng
 */
@Schema(description = "角色新增DTO")
@Data
public class RoleAddDTO implements ConverterDTO<TblRole> {

    /**
     * 角色名称
     */
    @Schema(description = "角色名称")
    @Size(max = 64, message = "角色名称最大长度要小于 64")
    @NotBlank(message = "角色名称不能为空")
    private String name;

    /**
     * 唯一编码
     */
    @Schema(description = "唯一编码")
    @Size(max = 64, message = "唯一编码最大长度要小于 64")
    @NotBlank(message = "唯一编码不能为空")
    private String code;

    /**
     * 权限范围
     */
    @Schema(description = "权限范围")
    private Integer permissionScopeType;

    /**
     * 权限范围数据
     */
    @Schema(description = "权限范围数据")
    private PermissionScope permissionScope;

    /**
     * 是否启用
     */
    @Schema(description = "是否启用")
    @NotNull(message = "是否启用不能为null")
    private Boolean enabled;

    /**
     * 备注
     */
    @Schema(description = "备注")
    @Size(max = 255, message = "备注最大长度要小于 255")
    private String comment;

    /**
     * 菜单ID列表
     */
    @Schema(description = "菜单ID列表")
    private List<Long> menuIds;

    @Override
    public TblRole converter() {
        TblRole role = new TblRole();
        BeanUtil.copyProperties(this, role);
        return role;
    }
}
